#ifndef __GenQUEUE_H
#define __GenQUEUE_H

#include <stdlib.h>
#include <string.h>
#include <dos.h>
#include "utypes.h"
#include <stdio.h>

/** @defgroup GenQueue GenQueue
 * @{
 *
 * Generic Queue
 */

typedef struct {
	void *ptr;     ///< pointer
	int in;        ///< int
	int out;       ///< out
	int	count;     ///< count
	int size;      ///< Queue size
	int ele_size;  ///< element size
} GQueue;

/** Creates new GQueue
*/
GQueue * newGQueue(int n_ele, int size_ele);
/** Deletes GQueue
*/
void deleteGQueue(GQueue *q);
/** Puts the element ele in the GQueue
*/
Bool putGQueue(GQueue *q, void *ele);
/** Gets the first element from the 
*/
void * getGQueue(GQueue *q);
/** returns true if the Queue doesnt have any elements
*/
Bool isEmptyGQueue(GQueue *q);
/** returns true if the Queue is full
*/
Bool isFullGQueue(GQueue *q);
/** void
*/
void end_of_putGQueue();

#endif /* __GenQUEUE_H */
